<?php
session_start();
include('include/config.php');
include('include/fonctions.php');
$messageErrMail = 'Page : ajout-devoir.php<br />';
$msgErrCatch='<div class="error">Une erreur technique est venue perturbée votre saisie. Notre équipe technique vient d\en être informée. Merci de renouveler votre opération ultérieurement.</div>';       
$msgErr = $nom = $prenom = $trimestre = $intitule = '';
$saisie = false;
actualiser_session();
$connection = connexionBdd();

//on récupère le nombres de période de l'enseignant
$req = $connection->prepare('SELECT `prof_period` FROM `prof` WHERE `prof_id` =:id LIMIT 0 , 1');
$req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
$req->execute();
$donnees = $req->fetch(PDO::FETCH_ASSOC);
$req->closeCursor();
$nbrPeriod = $donnees['prof_period'];

//on vérifie que l'on à envoyé le forumaire
if (!empty($_POST['envoyer'])) {
    $_SESSION['erreurs'] = 0;

    //Trimestre
    if (isset($_POST['trimestre'])) {
        $trimestre = secure($_POST['trimestre']);
        $_SESSION['trimestre_info'] = '';
        $_SESSION['form_trimestre'] = $trimestre;
    } else {
        $_SESSION['trimestre_info'] = '<div class="warning">Merci de renseigner le trimestre.</div>';
        $_SESSION['form_trimestre'] = '';
        $_SESSION['erreurs']++;
    }

    //Matière
    if (isset($_POST['matiere']) && ($_POST['matiere'] > 0)) {
        $matiere = secure($_POST['matiere']);
        $_SESSION['matiere_info'] = '';
        $_SESSION['form_matiere'] = $matiere;
    } else {
        $_SESSION['matiere_info'] = '<div class="warning">Merci de renseigner une matière.</div>';
        $_SESSION['form_matiere'] = '';
        $_SESSION['erreurs']++;
    }

    //Intitulé
    if (isset($_POST['intitule'])) {
        $intitule = secure($_POST['intitule']);
    }

    //tout est ok on continue l'inscription
    if ($_SESSION['erreurs'] < 1) {

        //on vérifie l'intitulé
        if (empty($intitule)) {
            //on récupère le nom de la matière et on ajoute la date
            $reqMatiere = $connection->prepare('SELECT `nom_matiere` FROM `matiere` WHERE `id_matiere`= :idMatiere');
            $reqMatiere->bindParam(':idMatiere', $matiere, PDO::PARAM_STR);
            $reqMatiere->execute();
            $count = $reqMatiere->rowCount();
            if ($count == 1) {
                $donne = $reqMatiere->fetch(PDO::FETCH_ASSOC);
                $intitule = $donne['nom_matiere'];
            } else {
                $intitule = 'Contrôle du ' . date('d/m/Y');
            }
            $reqMatiere->closeCursor();
        }

        $connection = connexionBdd();

        //on insère en base le nom du devoir
        $insertDevoir = $connection->prepare('INSERT INTO `devoir` (`nom_devoir`) VALUES (:intitule)');        
        $insertDevoir->bindParam(':intitule', $intitule, PDO::PARAM_STR);
        try {
            $insertDevoir->execute();
            //$test=$insertDevoir->debugDumpParams();
            $id_devoir = $connection->lastInsertId('id_devoir');
        } catch (Exception $e) {
            $_SESSION['bdd_info'] = $msgErrCatch;
            $_SESSION['erreurs']++;
            $messageErrMail .=$e->getMessage();
            error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
        }

        //on a toutes les infos que l'on veut, à présent on insère en base les notes.
        $insert = $connection->prepare('INSERT INTO `note` (                                        
                                        `id_prof`,
                                        `id_eleve`,
                                        `id_matiere`,
                                        `id_devoir`,
                                        `numerique_note`,
                                        `trimestre_note`, 
                                        `date_note`)
                                        VALUES(:id, :id_eleve, :matiere,:id_devoir, :note, :trimestre, NOW())');
        $insert->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
        $insert->bindParam(':matiere', $matiere, PDO::PARAM_INT);
        $insert->bindParam(':id_devoir', $id_devoir, PDO::PARAM_STR);
        $insert->bindParam(':trimestre', $trimestre, PDO::PARAM_INT);

        $req = $connection->prepare('SELECT `id_eleve`,`nom_eleve`,`prenom_eleve` FROM `eleve` e INNER JOIN `niveau` n ON e.`id_niveau`=n.`id_niveau` WHERE `id_prof`=:id ORDER BY e.`id_niveau`, `nom_eleve`,`prenom_eleve`');
        $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
        try {
            $req->execute();
        } catch (Exception $e) {
            $_SESSION['bdd_info'] = $msgErrCatch;
            $_SESSION['erreurs']++;
            $messageErrMail .=$e->getMessage();
            error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
        }

        
        $count = $req->rowCount();
        if ($count > 0) {
            $_SESSION['last_insert_note'] = '';
            while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
                //pour chaque élève que l'on récupère dans les post
                if (isset($_POST['eleve_' . $donnees['id_eleve']])) {
                    //pour gérer les flot en bdd et eviter la saisie d'un point ou d'une virgule
                    $note = str_replace(',', '.', secure($_POST['eleve_' . $donnees['id_eleve']]));
                    
                    //On test que c'est bien un numérique
                    if (is_numeric($note)) {
                        $insert->bindParam(':id_eleve', $donnees['id_eleve'], PDO::PARAM_INT);
                        $insert->bindParam(':note', $note, PDO::PARAM_INT);
                        try {
                            $insert->execute();
                            $_SESSION['last_insert_note'] .= $connection->lastInsertId('id_note') . ',';
                            $_POST['eleve_' . $donnees['id_eleve']] = '';
                        } catch (Exception $e) {
                            $_SESSION['bdd_info'] = $msgErrCatch;
                            $_SESSION['erreurs']++;
                            $messageErrMail .=$e->getMessage();
                            error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
                        }
                    }
                }
            }
        }
        $_SESSION['last_insert_note'] = substr($_SESSION['last_insert_note'], 0, strlen($_SESSION['last_insert_note']) - 1);
        $insert->closeCursor();
        //initialisation pour une nouvelle saisie
        $intitule = '';
        $saisie = true;
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//FR"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Ajouter un devoir</title>
        <meta charset="utf-8" />
        <meta name="description" content="Cette page vous permet d'ajouter des notes pour une matière donnée avec tous vos élèves." />
        <meta name="keywords" content="note, devoir, matière, gestion contrôle" />
        <meta name="author" content="Wicenty web" />
        <link rel="icon" href="images/favicon.ico" type="image/x-icon" />
        <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
        <link rel="stylesheet" href="css/style.css" />
        <link rel="stylesheet" href="css/menu.css" />
        <link rel="stylesheet" href="css/form.css" />
    </head>
    <body>
        <!--==============================header=================================-->
        <?php
        require_once('include/menu.php');
        ?>

        <!--==============================content================================-->
        <div class="bg1">
            <div class="bg">
                <section id="content">
                    <div class="container_12">
                        <article class="grid_12">
                            <h1>Gestion des devoirs</h1>                           
                            <p>Vous pouvez <strong>ajouter</strong> un devoir. Une fois saisi, vous aurez sur la droite le récapitulatif de votre saisie.</p>                            
                        </article>
                        <article class="grid_12">
                            <div class="border-bot"></div>
                        </article>
                        <article class="grid_7">
                            <h3>Ajouter un devoir</h3>
                            <?php
                            echo $msgErr;
                            if ((!isset($_SESSION['erreurs'])) || ( $_SESSION['erreurs'] > 0)) {
                                if (isset($_SESSION['trimestre_info']))
                                    echo $_SESSION['trimestre_info'];
                                if (isset($_SESSION['matiere_info']))
                                    echo $_SESSION['matiere_info'];
                            }
                            ?>
                            <form name="devoir" id="stylized" method="post" action="ajout-devoir.php" autocomplete="off">
                                <fieldset>
                                    <legend class="labelFieldset">Devoir</legend>
                                    <label for="matiere" class="label3">Période :</label>
                                    <?php
                                    /*
                                     * Gestion du nombre de période en fonction des paramètres du compte
                                     */
                                    ?>
                                    <div class="block">
                                        <?php
                                        for ($i = 1; $i <= $nbrPeriod; $i++) {
                                            echo '<label for="tri' . $i . '">' . $i . '</label> <input type="radio" name="trimestre" id="tri' . $i . '" value="' . $i . '" class="radio"';
                                            if ((isset($_SESSION['form_trimestre'])) && ($_SESSION['form_trimestre'] == $i))
                                                echo 'checked';
                                            echo '/>';
                                        }
                                        ?>
                                    </div>
                                    <?php
                                    $req = $connection->prepare('SELECT m.`id_matiere`,`nom_domaine`,`nom_matiere` FROM `matiere` m INNER JOIN `domaine` d ON m.`id_domaine`=d.`id_domaine` WHERE m.`id_prof`=:id ORDER BY `nom_domaine`, `nom_matiere`');
                                    $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
                                    $req->execute();
                                    $count = $req->rowCount();
                                    $domainePrecedent = '';
                                    if ($count > 0) {
                                        echo '<label for="matiere" class="label3">Matière :</label>';
                                        echo '<select name="matiere" class="select"><option value="0">---------------</option>';
                                        while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
                                            if ($domainePrecedent != $donnees['nom_domaine']) {
                                                echo '<option disabled><strong>' . $donnees['nom_domaine'] . '</strong></option>';
                                                $domainePrecedent = $donnees['nom_domaine'];
                                            }
                                            echo '<option value="' . $donnees['id_matiere'] . '">&nbsp;&nbsp;&nbsp;' . $donnees['nom_matiere'] . '</option>';
                                        }
                                        echo '</select>';
                                    } else {
                                        echo '<p>Aucune matière actuellement.</p>';
                                    }

                                    $req->closeCursor();
                                    ?>
                                    <label for="intitule" class="label3">Intitulé :</label> <input type="text" name="intitule" id="intitule" value="<?php echo $intitule; ?>" class="input"/><br/>

                                </fieldset>
                                <fieldset>
                                    <legend class="labelFieldset">Note par élève</legend>
                                    <?php
                                    $req = $connection->prepare('SELECT `id_eleve`,`nom_eleve`,`prenom_eleve`, `nom_niveau` FROM `eleve` NATURAL JOIN `niveau` WHERE `id_prof`=:id ORDER BY `id_niveau`, `nom_eleve`,`prenom_eleve`');
                                    $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
                                    $req->execute();
                                    $count = $req->rowCount();
                                    if ($count > 0) {

                                        $nivPrecedent = '';
                                        while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
                                            /*
                                             * On va gérer l'affichage des différentes classes.
                                             */
                                            if ($nivPrecedent != $donnees['nom_niveau']) {
                                                if ($nivPrecedent == '') {
                                                    echo '<fieldset><legend class="labelFieldset">' . $donnees['nom_niveau'] . '</legend>';
                                                } else {
                                                    echo '</fieldset><fieldset><legend class="labelFieldset">' . $donnees['nom_niveau'] . '</legend>';
                                                }
                                                $nivPrecedent = $donnees['nom_niveau'];
                                            }
                                            /*
                                             * Fin d'affichage des différentes classes
                                             */
                                            
                                            echo '<input type="text" name="eleve_' . $donnees['id_eleve'] . '" id="eleve_' . $donnees['id_eleve'] . '" value="';
                                            //on gère le fait de remettre les notes saisie, en cas d'erreur dans la saisie des infos du devoir
                                            if (isset($_POST['eleve_' . $donnees['id_eleve']])) {
                                                echo str_replace(',', '.', secure($_POST['eleve_' . $donnees['id_eleve']]));
                                            }
                                            echo '" class="inputDevoir"/>';
                                            echo '<label for="eleve_' . $donnees['id_eleve'] . '" class="label9">' . $donnees['nom_eleve'] . ' ' . $donnees['prenom_eleve'] . '</label><br/>';
                                        }
                                    } else {
                                        echo '<p>Aucun élève actuellement.</p>';
                                    }

                                    $req->closeCursor();
                                    ?>
                                </fieldset>
                                <label class="label3">&nbsp;</label><input type="submit" value="Ajouter ce devoir" name="envoyer" class="bouton"/>
                            </form>
                        </article>
                        <article class="grid_4 prefix_1 border1">
                            <?php
                            if ($saisie) {
                                echo '<h3>Vérification des notes</h3>';
                                echo '<p>Voici les notes qui viennent d\'être enregistrées.</p>';
                                //on récupère les nom et prénom des dernières note saisie, et on classe du meilleur au moins bon
                                $req = $connection->query('SELECT `nom_eleve`,`prenom_eleve`,`numerique_note` FROM `note` NATURAL JOIN `eleve` WHERE `id_note` IN (' . $_SESSION['last_insert_note'] . ') ORDER BY `numerique_note` DESC');
                                $req->execute();
                                $count = $req->rowCount();
                                if ($count > 0) {
                                    while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
                                        if ($donnees['numerique_note'] == NULL) {
                                            $note = 'Abs';
                                        } else {
                                            $note = $donnees['numerique_note'];
                                        }
                                        echo '<div class="result">' . $donnees['nom_eleve'] . ' ' . $donnees['prenom_eleve'] . '</div><div class="result2"> ' . $note . '</div><br />';
                                    }
                                }
                                $req->closeCursor();
                            } else {
                                ?>
                                <h3>Aide</h3>
                                <p>
                                    Les informations de la partie "Devoir" sont obligatoires, et vont vous permettre de mieux vous y retrouver sur votre grille de note.
                                </p>
                                <p> Le nom du devoir n'est pas une donnée public, mais reste à titre indicatif pour vous.</p>
                                <p> 
                                    Le titre est obligatoire, mais si vous le laissez vide, celui-ci prendra le nom de la matière auquel s'ajoute la date. Exemple : Dictée <?php echo date('d/m/Y'); ?>.
                                </p>
                                <p>
                                    Pour les notes, si un élève est absent, merci de ne rien mettre. Pour les virgules, vous pouvez, selon vos préférences, mettre une '.' (point) ou une ',' (virgule).
                                </p>
                                <?php
                            }
                            ?>
                        </article>
                    </div>
                </section>

                <!--==============================footer=================================-->
                <?php
//                echo '<pre>';
//                print_r($GLOBALS);
//                echo '</pre>';
                require_once 'include/footer.php';
                ?>
            </div>
        </div>
    </body>
</html>